package com.elguile.laptop.baseDatos;

import java.util.ArrayList;

import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.elguile.laptop.casoDeUso.RegistroDeVenta;
import com.elguile.laptop.entidades.Venta;

public class RepositorioVenta {

	private final Map<Integer, Venta> ventas = new HashMap<Integer, Venta>();

	public RepositorioVenta() {

	}

	public RepositorioVenta(Venta... ventas) {
		for (Venta venta : ventas) {
			guarda(new Venta(venta));
		}
	}

	public List<Venta> lista() {
		Collection<Venta> original = ventas.values();
		List<Venta> respusta = new ArrayList<Venta>();
		for (Venta venta : original) {
			respusta.add(new Venta(venta));
		}
		return new ArrayList<Venta>(ventas.values());
	}

	public void guarda(Venta venta) {
		int key = ventas.size() + 1;
		venta.setCodigoVenta(key);
		ventas.put(key, new Venta(venta));

	}

	public Venta getPrimera() {
		return lista().get(0);
	}

	public int cantidad() {
		return ventas.size();
	}

	public List<Venta> buscar(String codigo, Date inicio, Date fin) {
		ArrayList<Venta> respuesta = new ArrayList<Venta>();
		List<Venta> lista = lista();

		for (Venta venta : lista) {
			if ("".equals(codigo)) {
				if (venta.estaEntreFechas(inicio, fin))

					respuesta.add(venta);

			} else {
				
				if ((venta.getCodigoVenta() + "").startsWith(codigo)
						&& venta.estaEntreFechas(inicio, fin))
					respuesta.add(venta);
			}

		}
		return respuesta;

	}
}
